// #include<stdio.h>
// int main()
// {
//     printf("hehe\n");
//     main();
//     //stack overflow,栈溢出
//     return 0;
// }



// #include<stdio.h>
// void print(int a)
// {
// if(a>9)
// print(a/10);
// printf("%d ",a%10);
// }
// int main()
// {
//     int n = 0;
//     scanf("%d",&n);
//     print(n);
//     return 0;
// }



// #include<stdio.h>
// int fib(int k)
// {
//     // if(a<=2)
//     // return 1;
//     // else
//     // return fib(a-1)+fib(a-2);
//     int a = 1;
//     int b = 1;
//     int c = 0;
//     if(k<=2)
//     return 1;
//     while(k>2)
//     {
//         c = a+b;
//         a = b;
//         b = c;
//         k--;
//     }
// return c;
// }
// int main()
// {
//     int a = 0;
//     scanf("%d",&a);
//     int r = fib(a);
//     printf("%d",r);
//     return 0;
// }



// #include<stdio.h>
// int gcd(int a, int b)
// {
//     while (b!=0)
//     {
//       int temp = b;
//       b = a%b;
//       a  =temp;
//     }
//     return a;
// }
// int main()
// {
//     int a,b;
//     scanf("%d %d",&a,&b);
//     a = gcd(a,b);
//     printf("%d",a);
//     return 0;
// }




// #include<stdio.h>
// int main()
// {
// //   printf("%d\n",15);
// //   printf("%d\n",0xf);
// //   printf("%d\n",0xF);
// //   printf("%d\n",017);
// // //int a = -7;的源码
// // 1 0000000000000000000000000000111
// // //符号位+31位二进制表示;
// // //反码 符号位不变 剩余位取反
// // //补码 反码+1
// // //正整数的源码 反码 补码相同
// int a = 12;
// a<<=1;
// printf("%d",a);
//   return 0;
// }








#include<stdio.h>

int main()
{
    int a = -10;
  int b = a<<1;
  printf("%d\n",a);
  printf("%d\n",b);
  int c = -5;
  int d = 13; 
  int e = c&d;//&为按位与,同时为1才为1
  printf("%d\n",e);
  int aa = -5;
  int bb = 13;
  int cc = aa|bb;//|为按位或，只有同时为0才为0。
  printf("%d\n",cc);
  int aaa = -5;
  int bbb = 13;
  int ccc = aaa^bbb;//^为按位异或,相同为0,相异为1
  printf("%d\n",ccc);
  int k =0;
  printf("%d",~k);//~为按位取反，将0变1,1变0;
//以上位操作符必须为整数





  return 0;
}